home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / SLAX 6.0.8 / slax-6.0.8.iso / slax / base / 006-devel.lzm / usr / include / slapi-plugin.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-07-24  |  36.7 KB  |  886 lines

  1. /* $OpenLDAP: pkg/ldap/include/slapi-plugin.h,v 1.37.2.7 2008/02/11 23:24:10 kurt Exp $ */
  2. /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  3.  *
  4.  * Copyright 1998-2008 The OpenLDAP Foundation.
  5.  * Portions Copyright 1997,2002,2003 IBM Corporation.
  6.  * All rights reserved.
  7.  *
  8.  * Redistribution and use in source and binary forms, with or without
  9.  * modification, are permitted only as authorized by the OpenLDAP
  10.  * Public License.
  11.  *
  12.  * A copy of this license is available in file LICENSE in the
  13.  * top-level directory of the distribution or, alternatively, at
  14.  * <http://www.OpenLDAP.org/license.html>.
  15.  */
  16.  
  17. /*
  18.  * This header is used in development of SLAPI plugins for
  19.  * OpenLDAP slapd(8) and other directory servers supporting
  20.  * this interface.  Your portability mileage may vary.
  21.  */
  22.  
  23. #ifndef _SLAPI_PLUGIN_H
  24. #define _SLAPI_PLUGIN_H
  25.  
  26. #include <ldap.h>
  27.  
  28. typedef struct slapi_pblock        Slapi_PBlock;
  29. typedef struct slapi_entry        Slapi_Entry;
  30. typedef struct slapi_attr        Slapi_Attr;
  31. typedef struct slapi_value        Slapi_Value;
  32. typedef struct slapi_valueset        Slapi_ValueSet;
  33. typedef struct slapi_filter        Slapi_Filter;
  34. typedef struct slap_backend_db        Slapi_Backend;
  35. typedef struct slap_op            Slapi_Operation;
  36. typedef struct slap_conn        Slapi_Connection;
  37. typedef struct slapi_dn            Slapi_DN;
  38. typedef struct slapi_rdn        Slapi_RDN;
  39. typedef struct slapi_mod        Slapi_Mod;
  40. typedef struct slapi_mods        Slapi_Mods;
  41. typedef struct slapi_componentid    Slapi_ComponentId;
  42.  
  43. #define SLAPI_ATTR_UNIQUEID    "entryUUID"
  44. #define SLAPI_ATTR_OBJECTCLASS    "objectClass"
  45.  
  46. /* pblock routines */
  47. int slapi_pblock_get( Slapi_PBlock *pb, int arg, void *value );
  48. int slapi_pblock_set( Slapi_PBlock *pb, int arg, void *value );
  49. Slapi_PBlock *slapi_pblock_new( void );
  50. void slapi_pblock_destroy( Slapi_PBlock *pb );
  51.  
  52. /* entry/attr/dn routines */
  53. Slapi_Entry *slapi_str2entry( char *s, int flags );
  54. #define SLAPI_STR2ENTRY_REMOVEDUPVALS    1
  55. #define SLAPI_STR2ENTRY_ADDRDNVALS    2
  56. #define SLAPI_STR2ENTRY_BIGENTRY    4
  57. #define SLAPI_STR2ENTRY_TOMBSTONE_CHECK    8
  58. #define SLAPI_STR2ENTRY_IGNORE_STATE    16
  59. #define SLAPI_STR2ENTRY_INCLUDE_VERSION_STR    32
  60. #define SLAPI_STR2ENTRY_EXPAND_OBJECTCLASSES    64
  61. #define SLAPI_STR2ENTRY_NOT_WELL_FORMED_LDIF    128
  62. char *slapi_entry2str( Slapi_Entry *e, int *len );
  63. char *slapi_entry_get_dn( Slapi_Entry *e );
  64. int slapi_x_entry_get_id( Slapi_Entry *e );
  65. void slapi_entry_set_dn( Slapi_Entry *e, char *dn );
  66. Slapi_Entry *slapi_entry_dup( Slapi_Entry *e );
  67. int slapi_entry_attr_delete( Slapi_Entry *e, char *type );
  68. Slapi_Entry *slapi_entry_alloc();
  69. void slapi_entry_free( Slapi_Entry *e );
  70. int slapi_entry_attr_merge( Slapi_Entry *e, char *type, struct berval **vals );
  71. int slapi_entry_attr_find( Slapi_Entry *e, char *type, Slapi_Attr **attr );
  72. char *slapi_entry_attr_get_charptr( const Slapi_Entry *e, const char *type );
  73. int slapi_entry_attr_get_int( const Slapi_Entry *e, const char *type );
  74. long slapi_entry_attr_get_long( const Slapi_Entry *e, const char *type );
  75. unsigned int slapi_entry_attr_get_uint( const Slapi_Entry *e, const char *type );
  76. unsigned long slapi_entry_attr_get_ulong( const Slapi_Entry *e, const char *type );
  77. int slapi_attr_get_values( Slapi_Attr *attr, struct berval ***vals );
  78. char *slapi_dn_normalize( char *dn );
  79. char *slapi_dn_normalize_case( char *dn );
  80. int slapi_dn_issuffix( char *dn, char *suffix );
  81. char *slapi_dn_beparent( Slapi_PBlock *pb, const char *dn );
  82. int slapi_dn_isbesuffix( Slapi_PBlock *pb, char *dn );
  83. char *slapi_dn_parent( const char *dn );
  84. int slapi_dn_isparent( const char *parentdn, const char *childdn );
  85. char *slapi_dn_ignore_case( char *dn );
  86. int slapi_rdn2typeval( char *rdn, char **type, struct berval *bv );
  87. char *slapi_dn_plus_rdn(const char *dn, const char *rdn);
  88.  
  89. /* DS 5.x SLAPI */
  90. int slapi_access_allowed( Slapi_PBlock *pb, Slapi_Entry *e, char *attr, struct berval *val, int access );
  91. int slapi_acl_check_mods( Slapi_PBlock *pb, Slapi_Entry *e, LDAPMod **mods, char **errbuf );
  92. Slapi_Attr *slapi_attr_new( void );
  93. Slapi_Attr *slapi_attr_init( Slapi_Attr *a, const char *type );
  94. void slapi_attr_free( Slapi_Attr **a );
  95. Slapi_Attr *slapi_attr_dup( const Slapi_Attr *attr );
  96. int slapi_attr_add_value( Slapi_Attr *a, const Slapi_Value *v );
  97. int slapi_attr_type2plugin( const char *type, void **pi );
  98. int slapi_attr_get_type( const Slapi_Attr *attr, char **type );
  99. int slapi_attr_get_oid_copy( const Slapi_Attr *attr, char **oidp );
  100. int slapi_attr_get_flags( const Slapi_Attr *attr, unsigned long *flags );
  101. int slapi_attr_flag_is_set( const Slapi_Attr *attr, unsigned long flag );
  102. int slapi_attr_value_cmp( const Slapi_Attr *attr, const struct berval *v1, const struct berval *v2 );
  103. int slapi_attr_value_find( const Slapi_Attr *a, struct berval *v );
  104. #define SLAPI_TYPE_CMP_EXACT    0
  105. #define SLAPI_TYPE_CMP_BASE    1
  106. #define SLAPI_TYPE_CMP_SUBTYPE    2
  107. int slapi_attr_type_cmp( const char *t1, const char *t2, int opt );
  108. int slapi_attr_types_equivalent( const char *t1, const char *t2 );
  109. int slapi_attr_first_value( Slapi_Attr *a, Slapi_Value **v );
  110. int slapi_attr_next_value( Slapi_Attr *a, int hint, Slapi_Value **v );
  111. int slapi_attr_get_numvalues( const Slapi_Attr *a, int *numValues );
  112. int slapi_attr_get_valueset( const Slapi_Attr *a, Slapi_ValueSet **vs );
  113. int slapi_attr_get_bervals_copy( Slapi_Attr *a, struct berval ***vals );
  114. int slapi_entry_attr_hasvalue( Slapi_Entry *e, const char *type, const char *value );
  115. int slapi_entry_attr_merge_sv( Slapi_Entry *e, const char *type, Slapi_Value **vals );
  116. void slapi_entry_attr_set_charptr(Slapi_Entry* e, const char *type, const char *value);
  117. void slapi_entry_attr_set_int( Slapi_Entry* e, const char *type, int l);
  118. void slapi_entry_attr_set_uint( Slapi_Entry* e, const char *type, unsigned int l);
  119. void slapi_entry_attr_set_long(Slapi_Entry* e, const char *type, long l);
  120. void slapi_entry_attr_set_ulong(Slapi_Entry* e, const char *type, unsigned long l);
  121. int slapi_entry_has_children(const Slapi_Entry *e);
  122. size_t slapi_entry_size(Slapi_Entry *e);
  123. int slapi_is_rootdse( const char *dn );
  124. int slapi_entry_attr_merge_sv( Slapi_Entry *e, const char *type, Slapi_Value **vals );
  125. int slapi_entry_add_values_sv( Slapi_Entry *e, const char *type, Slapi_Value **vals );
  126. int slapi_entry_add_valueset(Slapi_Entry *e, const char *type, Slapi_ValueSet *vs);
  127. int slapi_entry_delete_values_sv( Slapi_Entry *e, const char *type, Slapi_Value **vals );
  128. int slapi_entry_merge_values_sv( Slapi_Entry *e, const char *type, Slapi_Value **vals );
  129. int slapi_entry_attr_replace_sv( Slapi_Entry *e, const char *type, Slapi_Value **vals );
  130. int slapi_entry_add_value(Slapi_Entry *e, const char *type, const Slapi_Value *value);
  131. int slapi_entry_add_string(Slapi_Entry *e, const char *type, const char *value);
  132. int slapi_entry_delete_string(Slapi_Entry *e, const char *type, const char *value);
  133. int slapi_entry_first_attr( const Slapi_Entry *e, Slapi_Attr **attr );
  134. int slapi_entry_next_attr( const Slapi_Entry *e, Slapi_Attr *prevattr, Slapi_Attr **attr );
  135. const char *slapi_entry_get_uniqueid( const Slapi_Entry *e );
  136. void slapi_entry_set_uniqueid( Slapi_Entry *e, char *uniqueid );
  137. int slapi_entry_schema_check( Slapi_PBlock *pb, Slapi_Entry *e );
  138. int slapi_entry_rdn_values_present( const Slapi_Entry *e );
  139. int slapi_entry_add_rdn_values( Slapi_Entry *e );
  140. char *slapi_attr_syntax_normalize( const char *s );
  141.  
  142. Slapi_Value *slapi_value_new( void );
  143. Slapi_Value *slapi_value_new_berval(const struct berval *bval);
  144. Slapi_Value *slapi_value_new_value(const Slapi_Value *v);
  145. Slapi_Value *slapi_value_new_string(const char *s);
  146. Slapi_Value *slapi_value_init(Slapi_Value *v);
  147. Slapi_Value *slapi_value_init_berval(Slapi_Value *v, struct berval *bval);
  148. Slapi_Value *slapi_value_init_string(Slapi_Value *v, const char *s);
  149. Slapi_Value *slapi_value_dup(const Slapi_Value *v);
  150. void slapi_value_free(Slapi_Value **value);
  151. const struct berval *slapi_value_get_berval( const Slapi_Value *value );
  152. Slapi_Value *slapi_value_set_berval( Slapi_Value *value, const struct berval *bval );
  153. Slapi_Value *slapi_value_set_value( Slapi_Value *value, const Slapi_Value *vfrom);
  154. Slapi_Value *slapi_value_set( Slapi_Value *value, void *val, unsigned long len);
  155. int slapi_value_set_string(Slapi_Value *value, const char *strVal);
  156. int slapi_value_set_int(Slapi_Value *value, int intVal);
  157. const char*slapi_value_get_string(const Slapi_Value *value);
  158. int slapi_value_get_int(const Slapi_Value *value); 
  159. unsigned int slapi_value_get_uint(const Slapi_Value *value); 
  160. long slapi_value_get_long(const Slapi_Value *value); 
  161. unsigned long slapi_value_get_ulong(const Slapi_Value *value); 
  162. size_t slapi_value_get_length(const Slapi_Value *value);
  163. int slapi_value_compare(const Slapi_Attr *a, const Slapi_Value *v1, const Slapi_Value *v2);
  164.  
  165. Slapi_ValueSet *slapi_valueset_new( void );
  166. void slapi_valueset_free(Slapi_ValueSet *vs);
  167. void slapi_valueset_init(Slapi_ValueSet *vs);
  168. void slapi_valueset_done(Slapi_ValueSet *vs);
  169. void slapi_valueset_add_value(Slapi_ValueSet *vs, const Slapi_Value *addval);
  170. int slapi_valueset_first_value( Slapi_ValueSet *vs, Slapi_Value **v );
  171. int slapi_valueset_next_value( Slapi_ValueSet *vs, int index, Slapi_Value **v);
  172. int slapi_valueset_count( const Slapi_ValueSet *vs);
  173. void slapi_valueset_set_valueset(Slapi_ValueSet *vs1, const Slapi_ValueSet *vs2);
  174.  
  175. /* DNs */
  176. Slapi_DN *slapi_sdn_new( void );
  177. Slapi_DN *slapi_sdn_new_dn_byval( const char *dn );
  178. Slapi_DN *slapi_sdn_new_ndn_byval( const char *ndn );
  179. Slapi_DN *slapi_sdn_new_dn_byref( const char *dn );
  180. Slapi_DN *slapi_sdn_new_ndn_byref( const char *ndn );
  181. Slapi_DN *slapi_sdn_new_dn_passin( const char *dn );
  182. Slapi_DN *slapi_sdn_set_dn_byval( Slapi_DN *sdn, const char *dn );
  183. Slapi_DN *slapi_sdn_set_dn_byref( Slapi_DN *sdn, const char *dn );
  184. Slapi_DN *slapi_sdn_set_dn_passin( Slapi_DN *sdn, const char *dn );
  185. Slapi_DN *slapi_sdn_set_ndn_byval( Slapi_DN *sdn, const char *ndn );
  186. Slapi_DN *slapi_sdn_set_ndn_byref( Slapi_DN *sdn, const char *ndn );
  187. void slapi_sdn_done( Slapi_DN *sdn );
  188. void slapi_sdn_free( Slapi_DN **sdn );
  189. const char * slapi_sdn_get_dn( const Slapi_DN *sdn );
  190. const char * slapi_sdn_get_ndn( const Slapi_DN *sdn );
  191. void slapi_sdn_get_parent( const Slapi_DN *sdn,Slapi_DN *sdn_parent );
  192. void slapi_sdn_get_backend_parent( const Slapi_DN *sdn, Slapi_DN *sdn_parent, const Slapi_Backend *backend );
  193. Slapi_DN * slapi_sdn_dup( const Slapi_DN *sdn );
  194. void slapi_sdn_copy( const Slapi_DN *from, Slapi_DN *to );
  195. int slapi_sdn_compare( const Slapi_DN *sdn1, const Slapi_DN *sdn2 );
  196. int slapi_sdn_isempty( const Slapi_DN *sdn );
  197. int slapi_sdn_issuffix(const Slapi_DN *sdn, const Slapi_DN *suffixsdn );
  198. int slapi_sdn_isparent( const Slapi_DN *parent, const Slapi_DN *child );
  199. int slapi_sdn_isgrandparent( const Slapi_DN *parent, const Slapi_DN *child );
  200. int slapi_sdn_get_ndn_len( const Slapi_DN *sdn );
  201. int slapi_sdn_scope_test( const Slapi_DN *dn, const Slapi_DN *base, int scope );
  202. void slapi_sdn_get_rdn( const Slapi_DN *sdn,Slapi_RDN *rdn );
  203. Slapi_DN *slapi_sdn_set_rdn( Slapi_DN *sdn, const Slapi_RDN *rdn );
  204. Slapi_DN *slapi_sdn_set_parent( Slapi_DN *sdn, const Slapi_DN *parentdn );
  205. int slapi_sdn_is_rdn_component( const Slapi_DN *rdn, const Slapi_Attr *a, const Slapi_Value *v );
  206. char * slapi_moddn_get_newdn( Slapi_DN *dn_olddn, char *newrdn, char *newsuperiordn );
  207.  
  208. /* RDNs */
  209. Slapi_RDN *slapi_rdn_new( void );
  210. Slapi_RDN *slapi_rdn_new_dn( const char *dn );
  211. Slapi_RDN *slapi_rdn_new_sdn( const Slapi_DN *sdn );
  212. Slapi_RDN *slapi_rdn_new_rdn( const Slapi_RDN *fromrdn ); 
  213. void slapi_rdn_init( Slapi_RDN *rdn );
  214. void slapi_rdn_init_dn( Slapi_RDN *rdn, const char *dn );
  215. void slapi_rdn_init_sdn( Slapi_RDN *rdn, const Slapi_DN *sdn );
  216. void slapi_rdn_init_rdn( Slapi_RDN *rdn, const Slapi_RDN *fromrdn ); 
  217. void slapi_rdn_set_dn( Slapi_RDN *rdn, const char *dn );
  218. void slapi_rdn_set_sdn( Slapi_RDN *rdn, const Slapi_DN *sdn );
  219. void slapi_rdn_set_rdn( Slapi_RDN *rdn, const Slapi_RDN *fromrdn );
  220. void slapi_rdn_free( Slapi_RDN **rdn );
  221. void slapi_rdn_done( Slapi_RDN *rdn );
  222. int slapi_rdn_get_first( Slapi_RDN *rdn, char **type, char **value );
  223. int slapi_rdn_get_next( Slapi_RDN *rdn, int index, char **type, char **value );
  224. int slapi_rdn_get_index( Slapi_RDN *rdn, const char *type, const char *value, size_t length );
  225. int slapi_rdn_get_index_attr( Slapi_RDN *rdn, const char *type, char **value );
  226. int slapi_rdn_contains( Slapi_RDN *rdn, const char *type, const char *value,size_t length );
  227. int slapi_rdn_contains_attr( Slapi_RDN *rdn, const char *type, char **value );
  228. int slapi_rdn_add( Slapi_RDN *rdn, const char *type, const char *value );
  229. int slapi_rdn_remove_index( Slapi_RDN *rdn, int atindex );
  230. int slapi_rdn_remove( Slapi_RDN *rdn, const char *type, const char *value, size_t length );
  231. int slapi_rdn_remove_attr( Slapi_RDN *rdn, const char *type );
  232. int slapi_rdn_isempty( const Slapi_RDN *rdn );
  233. int slapi_rdn_get_num_components( Slapi_RDN *rdn );
  234. int slapi_rdn_compare( Slapi_RDN *rdn1, Slapi_RDN *rdn2 );
  235. const char *slapi_rdn_get_rdn( const Slapi_RDN *rdn );
  236. const char *slapi_rdn_get_nrdn( const Slapi_RDN *rdn );
  237. Slapi_DN *slapi_sdn_add_rdn( Slapi_DN *sdn, const Slapi_RDN *rdn );
  238.  
  239. /* locks and synchronization */
  240. typedef struct slapi_mutex    Slapi_Mutex;
  241. typedef struct slapi_condvar    Slapi_CondVar;
  242. Slapi_Mutex *slapi_new_mutex( void );
  243. void slapi_destroy_mutex( Slapi_Mutex *mutex );
  244. void slapi_lock_mutex( Slapi_Mutex *mutex );
  245. int slapi_unlock_mutex( Slapi_Mutex *mutex );
  246. Slapi_CondVar *slapi_new_condvar( Slapi_Mutex *mutex );
  247. void slapi_destroy_condvar( Slapi_CondVar *cvar );
  248. int slapi_wait_condvar( Slapi_CondVar *cvar, struct timeval *timeout );
  249. int slapi_notify_condvar( Slapi_CondVar *cvar, int notify_all );
  250.  
  251. /* thread-safe LDAP connections */
  252. LDAP *slapi_ldap_init( char *ldaphost, int ldapport, int secure, int shared );
  253. void slapi_ldap_unbind( LDAP *ld );
  254.  
  255. char *slapi_ch_malloc( unsigned long size );
  256. void slapi_ch_free( void **ptr );
  257. void slapi_ch_free_string( char **ptr );
  258. char *slapi_ch_calloc( unsigned long nelem, unsigned long size );
  259. char *slapi_ch_realloc( char *block, unsigned long size );
  260. char *slapi_ch_strdup( const char *s );
  261. void slapi_ch_array_free( char **arrayp );
  262. struct berval *slapi_ch_bvdup(const struct berval *v);
  263. struct berval **slapi_ch_bvecdup(const struct berval **v);
  264.  
  265. /* LDAP V3 routines */
  266. int slapi_control_present( LDAPControl **controls, char *oid,
  267.     struct berval **val, int *iscritical);
  268. void slapi_register_supported_control(char *controloid,
  269.     unsigned long controlops);
  270. #define SLAPI_OPERATION_BIND            0x00000001L
  271. #define SLAPI_OPERATION_UNBIND          0x00000002L
  272. #define SLAPI_OPERATION_SEARCH          0x00000004L
  273. #define SLAPI_OPERATION_MODIFY          0x00000008L
  274. #define SLAPI_OPERATION_ADD             0x00000010L
  275. #define SLAPI_OPERATION_DELETE          0x00000020L
  276. #define SLAPI_OPERATION_MODDN           0x00000040L
  277. #define SLAPI_OPERATION_MODRDN          SLAPI_OPERATION_MODDN
  278. #define SLAPI_OPERATION_COMPARE         0x00000080L
  279. #define SLAPI_OPERATION_ABANDON         0x00000100L
  280. #define SLAPI_OPERATION_EXTENDED        0x00000200L
  281. #define SLAPI_OPERATION_ANY             0xFFFFFFFFL
  282. #define SLAPI_OPERATION_NONE            0x00000000L
  283. int slapi_get_supported_controls(char ***ctrloidsp, unsigned long **ctrlopsp);
  284. LDAPControl *slapi_dup_control(LDAPControl *ctrl);
  285. void slapi_register_supported_saslmechanism(char *mechanism);
  286. char **slapi_get_supported_saslmechanisms();
  287. char **slapi_get_supported_extended_ops(void);
  288.  
  289. /* operation */
  290. int slapi_op_abandoned( Slapi_PBlock *pb );
  291. unsigned long slapi_op_get_type(Slapi_Operation * op);
  292. void slapi_operation_set_flag(Slapi_Operation *op, unsigned long flag);
  293. void slapi_operation_clear_flag(Slapi_Operation *op, unsigned long flag);
  294. int slapi_operation_is_flag_set(Slapi_Operation *op, unsigned long flag);
  295. char *slapi_op_type_to_string(unsigned long type);
  296.  
  297. /* send ldap result back */
  298. void slapi_send_ldap_result( Slapi_PBlock *pb, int err, char *matched,
  299.     char *text, int nentries, struct berval **urls );
  300. int slapi_send_ldap_search_entry( Slapi_PBlock *pb, Slapi_Entry *e,
  301.     LDAPControl **ectrls, char **attrs, int attrsonly );
  302. int slapi_send_ldap_search_reference( Slapi_PBlock *pb, Slapi_Entry *e,
  303.     struct berval **urls, LDAPControl **ectrls, struct berval **v2refs );
  304.  
  305. /* filter routines */
  306. Slapi_Filter *slapi_str2filter( char *str );
  307. Slapi_Filter *slapi_filter_dup( Slapi_Filter *f );
  308. void slapi_filter_free( Slapi_Filter *f, int recurse );
  309. int slapi_filter_get_choice( Slapi_Filter *f);
  310. int slapi_filter_get_ava( Slapi_Filter *f, char **type, struct berval **bval );
  311. Slapi_Filter *slapi_filter_list_first( Slapi_Filter *f );
  312. Slapi_Filter *slapi_filter_list_next( Slapi_Filter *f, Slapi_Filter *fprev );
  313. int slapi_filter_get_attribute_type( Slapi_Filter *f, char **type ); 
  314. int slapi_x_filter_set_attribute_type( Slapi_Filter *f, const char *type );
  315. int slapi_filter_get_subfilt( Slapi_Filter *f, char **type, char **initial,
  316.     char ***any, char **final );
  317. Slapi_Filter *slapi_filter_join( int ftype, Slapi_Filter *f1, Slapi_Filter *f2);
  318. int slapi_x_filter_append( int choice, Slapi_Filter **pContainingFilter,
  319.     Slapi_Filter **pNextFilter, Slapi_Filter *filterToAppend );
  320. int slapi_filter_test( Slapi_PBlock *pb, Slapi_Entry *e, Slapi_Filter *f,
  321.     int verify_access );
  322. int slapi_filter_test_simple( Slapi_Entry *e, Slapi_Filter *f );
  323. typedef int (*FILTER_APPLY_FN)( Slapi_Filter *f, void *arg );
  324. int slapi_filter_apply( Slapi_Filter *f, FILTER_APPLY_FN fn, void *arg, int *error_code );
  325. #define SLAPI_FILTER_SCAN_STOP            -1 /* set by callback */
  326. #define SLAPI_FILTER_SCAN_ERROR            -2 /* set by callback */
  327. #define SLAPI_FILTER_SCAN_NOMORE        0 /* set by callback */
  328. #define SLAPI_FILTER_SCAN_CONTINUE        1 /* set by callback */
  329. #define SLAPI_FILTER_UNKNOWN_FILTER_TYPE    2 /* set by slapi_filter_apply() */
  330.  
  331. /* internal add/delete/search/modify routines */
  332. Slapi_PBlock *slapi_search_internal( char *base, int scope, char *filter, 
  333.     LDAPControl **controls, char **attrs, int attrsonly );
  334. Slapi_PBlock *slapi_modify_internal( char *dn, LDAPMod **mods,
  335.         LDAPControl **controls, int log_change );
  336. Slapi_PBlock *slapi_add_internal( char * dn, LDAPMod **attrs,
  337.     LDAPControl **controls, int log_changes );
  338. Slapi_PBlock *slapi_add_entry_internal( Slapi_Entry * e,
  339.     LDAPControl **controls, int log_change );
  340. Slapi_PBlock *slapi_delete_internal( char * dn,  LDAPControl **controls,
  341.     int log_change );
  342. Slapi_PBlock *slapi_modrdn_internal( char * olddn, char * newrdn,
  343.     int deloldrdn, LDAPControl **controls,
  344.     int log_change );
  345. Slapi_PBlock *slapi_rename_internal( const char * olddn, const char *newrdn,
  346.     const char *newsuperior, int delolrdn,
  347.     LDAPControl **controls, int log_change );
  348. void slapi_free_search_results_internal(Slapi_PBlock *pb);
  349.  
  350. /* new internal add/delete/search/modify routines */
  351. typedef void (*plugin_result_callback)( int rc, void *callback_data );
  352. typedef int (*plugin_referral_entry_callback)( char * referral,
  353.     void *callback_data );
  354. typedef int (*plugin_search_entry_callback)( Slapi_Entry *e,
  355.     void *callback_data );
  356. void slapi_free_search_results_internal( Slapi_PBlock *pb );
  357.  
  358. #define SLAPI_OP_FLAG_NEVER_CHAIN    0x0800
  359.  
  360. int slapi_search_internal_pb( Slapi_PBlock *pb );
  361. int slapi_search_internal_callback_pb( Slapi_PBlock *pb, void *callback_data,
  362.     plugin_result_callback prc, plugin_search_entry_callback psec,
  363.     plugin_referral_entry_callback prec );
  364. int slapi_add_internal_pb( Slapi_PBlock *pb );
  365. int slapi_modify_internal_pb( Slapi_PBlock *pb );
  366. int slapi_modrdn_internal_pb( Slapi_PBlock *pb );
  367. int slapi_delete_internal_pb( Slapi_PBlock *pb );
  368.  
  369. int slapi_seq_internal_callback_pb(Slapi_PBlock *pb, void *callback_data,
  370.         plugin_result_callback res_callback,
  371.         plugin_search_entry_callback srch_callback,
  372.         plugin_referral_entry_callback ref_callback);
  373.  
  374. void slapi_search_internal_set_pb( Slapi_PBlock *pb, const char *base,
  375.     int scope, const char *filter, char **attrs, int attrsonly,
  376.     LDAPControl **controls, const char *uniqueid,
  377.     Slapi_ComponentId *plugin_identity, int operation_flags );
  378. void slapi_add_entry_internal_set_pb( Slapi_PBlock *pb, Slapi_Entry *e,
  379.     LDAPControl **controls, Slapi_ComponentId *plugin_identity,
  380.     int operation_flags );
  381. int slapi_add_internal_set_pb( Slapi_PBlock *pb, const char *dn,
  382.     LDAPMod **attrs, LDAPControl **controls,
  383.     Slapi_ComponentId *plugin_identity, int operation_flags );
  384. void slapi_modify_internal_set_pb( Slapi_PBlock *pb, const char *dn,
  385.     LDAPMod **mods, LDAPControl **controls, const char *uniqueid,
  386.     Slapi_ComponentId *plugin_identity, int operation_flags );
  387. void slapi_rename_internal_set_pb( Slapi_PBlock *pb, const char *olddn,
  388.     const char *newrdn, const char *newsuperior, int deloldrdn,
  389.     LDAPControl **controls, const char *uniqueid,
  390.     Slapi_ComponentId *plugin_identity, int operation_flags );
  391. void slapi_delete_internal_set_pb( Slapi_PBlock *pb, const char *dn,
  392.     LDAPControl **controls, const char *uniqueid,
  393.     Slapi_ComponentId *plugin_identity, int operation_flags );
  394. void slapi_seq_internal_set_pb( Slapi_PBlock *pb, char *ibase, int type,
  395.     char *attrname, char *val, char **attrs, int attrsonly,
  396.     LDAPControl **controls, Slapi_ComponentId *plugin_identity,
  397.     int operation_flags );
  398.  
  399. /* connection related routines */
  400. int slapi_is_connection_ssl(Slapi_PBlock *pPB, int *isSSL);
  401. int slapi_get_client_port(Slapi_PBlock *pPB, int *fromPort);
  402.  
  403. /* computed attributes */
  404. typedef struct _computed_attr_context computed_attr_context;
  405. typedef int (*slapi_compute_output_t)(computed_attr_context *c, Slapi_Attr *a, Slapi_Entry *e);
  406. typedef int (*slapi_compute_callback_t)(computed_attr_context *c, char *type, Slapi_Entry *e, slapi_compute_output_t outputfn);
  407. typedef int (*slapi_search_rewrite_callback_t)(Slapi_PBlock *pb);
  408. int slapi_compute_add_evaluator(slapi_compute_callback_t function);
  409. int slapi_compute_add_search_rewriter(slapi_search_rewrite_callback_t function);
  410. int compute_rewrite_search_filter(Slapi_PBlock *pb);
  411. int compute_evaluator(computed_attr_context *c, char *type, Slapi_Entry *e, slapi_compute_output_t outputfn);
  412. int slapi_x_compute_get_pblock(computed_attr_context *c, Slapi_PBlock **pb);
  413.  
  414. /* backend routines */
  415. void slapi_be_set_readonly( Slapi_Backend *be, int readonly );
  416. int slapi_be_get_readonly( Slapi_Backend *be );
  417. const char *slapi_x_be_get_updatedn( Slapi_Backend *be );
  418. Slapi_Backend *slapi_be_select( const Slapi_DN *sdn );
  419.  
  420. /* ACL plugins; only SLAPI_PLUGIN_ACL_ALLOW_ACCESS supported now */
  421. typedef int (*slapi_acl_callback_t)(Slapi_PBlock *pb,
  422.     Slapi_Entry *e,
  423.     const char *attr,
  424.     struct berval *berval,
  425.     int access,
  426.     void *state);
  427.  
  428. /* object extensions */
  429. typedef void *(*slapi_extension_constructor_fnptr)(void *object, void *parent);
  430.  
  431. typedef void (*slapi_extension_destructor_fnptr)(void *extension,
  432.     void *object, void *parent);
  433.  
  434. int slapi_register_object_extension( const char *pluginname,
  435.     const char *objectname, slapi_extension_constructor_fnptr constructor,
  436.     slapi_extension_destructor_fnptr destructor, int *objecttype,
  437.     int *extensionhandle);
  438.  
  439. #define SLAPI_EXT_CONNECTION    "Connection"
  440. #define SLAPI_EXT_OPERATION     "Operation"
  441. #define SLAPI_EXT_ENTRY         "Entry"
  442. #define SLAPI_EXT_MTNODE        "Mapping Tree Node"
  443.  
  444. void *slapi_get_object_extension(int objecttype, void *object,
  445.     int extensionhandle);
  446. void slapi_set_object_extension(int objecttype, void *object,
  447.     int extensionhandle, void *extension);
  448.  
  449. int slapi_x_backend_get_flags( const Slapi_Backend *be, unsigned long *flags );
  450.  
  451. /* parameters currently supported */
  452.  
  453. /*
  454.  * Attribute flags returned by slapi_attr_get_flags()
  455.  */
  456. #define SLAPI_ATTR_FLAG_SINGLE        0x0001
  457. #define SLAPI_ATTR_FLAG_OPATTR        0x0002
  458. #define SLAPI_ATTR_FLAG_READONLY    0x0004
  459. #define SLAPI_ATTR_FLAG_STD_ATTR    SLAPI_ATTR_FLAG_READONLY
  460. #define SLAPI_ATTR_FLAG_OBSOLETE    0x0040
  461. #define SLAPI_ATTR_FLAG_COLLECTIVE    0x0080
  462. #define SLAPI_ATTR_FLAG_NOUSERMOD    0x0100
  463.  
  464. /*
  465.  * Backend flags returned by slapi_x_backend_get_flags()
  466.  */
  467. #define SLAPI_BACKEND_FLAG_NOLASTMOD        0x0001U
  468. #define SLAPI_BACKEND_FLAG_NO_SCHEMA_CHECK    0x0002U
  469. #define SLAPI_BACKEND_FLAG_GLUE_INSTANCE    0x0010U    /* a glue backend */
  470. #define SLAPI_BACKEND_FLAG_GLUE_SUBORDINATE    0x0020U    /* child of a glue hierarchy */
  471. #define SLAPI_BACKEND_FLAG_GLUE_LINKED        0x0040U    /* child is connected to parent */
  472. #define SLAPI_BACKEND_FLAG_OVERLAY        0x0080U    /* this db struct is an overlay */
  473. #define SLAPI_BACKEND_FLAG_GLOBAL_OVERLAY    0x0100U    /* this db struct is a global overlay */
  474. #define SLAPI_BACKEND_FLAG_SHADOW        0x8000U /* a shadow */
  475. #define SLAPI_BACKEND_FLAG_SYNC_SHADOW        0x1000U /* a sync shadow */
  476. #define SLAPI_BACKEND_FLAG_SLURP_SHADOW        0x2000U /* a slurp shadow */
  477.  
  478. /*
  479.  * ACL levels
  480.  */
  481. #define SLAPI_ACL_COMPARE       0x01
  482. #define SLAPI_ACL_SEARCH        0x02
  483. #define SLAPI_ACL_READ          0x04
  484. #define SLAPI_ACL_WRITE         0x08
  485. #define SLAPI_ACL_DELETE        0x10    
  486. #define SLAPI_ACL_ADD           0x20
  487. #define SLAPI_ACL_SELF          0x40
  488. #define SLAPI_ACL_PROXY         0x80
  489. #define SLAPI_ACL_ALL           0x7f
  490.  
  491. /* plugin types supported */
  492.  
  493. #define SLAPI_PLUGIN_DATABASE           1
  494. #define SLAPI_PLUGIN_EXTENDEDOP         2
  495. #define SLAPI_PLUGIN_PREOPERATION       3
  496. #define SLAPI_PLUGIN_POSTOPERATION      4
  497. #define SLAPI_PLUGIN_MATCHINGRULE       5
  498. #define SLAPI_PLUGIN_SYNTAX             6
  499. #define SLAPI_PLUGIN_AUDIT              7   
  500.  
  501. /* misc params */
  502.  
  503. #define SLAPI_BACKEND                130
  504. #define SLAPI_CONNECTION            131
  505. #define SLAPI_OPERATION                132
  506. #define SLAPI_REQUESTOR_ISROOT            133
  507. #define SLAPI_BE_MONITORDN            134
  508. #define SLAPI_BE_TYPE                   135
  509. #define SLAPI_BE_READONLY               136
  510. #define SLAPI_BE_LASTMOD                   137
  511. #define SLAPI_CONN_ID                    139
  512.  
  513. /* operation params */
  514. #define SLAPI_OPINITIATED_TIME            140
  515. #define SLAPI_REQUESTOR_DN            141
  516. #define SLAPI_IS_REPLICATED_OPERATION        142
  517. #define SLAPI_REQUESTOR_ISUPDATEDN        SLAPI_IS_REPLICATED_OPERATION
  518.  
  519. /* connection  structure params*/
  520. #define SLAPI_CONN_DN                    143
  521. #define SLAPI_CONN_AUTHTYPE                144
  522. #define SLAPI_CONN_CLIENTIP            145
  523. #define SLAPI_CONN_SERVERIP            146
  524. /* OpenLDAP extensions */
  525. #define SLAPI_X_CONN_CLIENTPATH            1300
  526. #define SLAPI_X_CONN_SERVERPATH            1301
  527. #define SLAPI_X_CONN_IS_UDP            1302
  528. #define SLAPI_X_CONN_SSF            1303
  529. #define SLAPI_X_CONN_SASL_CONTEXT        1304
  530. #define SLAPI_X_OPERATION_DELETE_GLUE_PARENT    1305
  531. #define SLAPI_X_MANAGEDIT            1306
  532. #define SLAPI_X_OPERATION_NO_SCHEMA_CHECK    1307
  533. #define SLAPI_X_ADD_STRUCTURAL_CLASS        1308
  534.  
  535. /*  Authentication types */
  536. #define SLAPD_AUTH_NONE   "none"
  537. #define SLAPD_AUTH_SIMPLE "simple"
  538. #define SLAPD_AUTH_SSL    "SSL"
  539. #define SLAPD_AUTH_SASL   "SASL " 
  540.  
  541. /* plugin configuration parmams */
  542. #define SLAPI_PLUGIN                3
  543. #define SLAPI_PLUGIN_PRIVATE            4
  544. #define SLAPI_PLUGIN_TYPE            5
  545. #define SLAPI_PLUGIN_ARGV            6
  546. #define SLAPI_PLUGIN_ARGC            7
  547. #define SLAPI_PLUGIN_VERSION            8
  548. #define SLAPI_PLUGIN_OPRETURN            9
  549. #define SLAPI_PLUGIN_OBJECT            10
  550. #define SLAPI_PLUGIN_DESTROY_FN            11
  551. #define SLAPI_PLUGIN_DESCRIPTION        12
  552. #define SLAPI_PLUGIN_IDENTITY            13
  553.  
  554. /* internal opreations params */
  555. #define SLAPI_PLUGIN_INTOP_RESULT        15
  556. #define SLAPI_PLUGIN_INTOP_SEARCH_ENTRIES    16
  557. #define SLAPI_PLUGIN_INTOP_SEARCH_REFERRALS    17
  558.  
  559. /* transaction arguments */
  560. #define SLAPI_PARENT_TXN            190
  561. #define SLAPI_TXN                191
  562.  
  563. /* function pointer params for backends */
  564. #define SLAPI_PLUGIN_DB_BIND_FN            200
  565. #define SLAPI_PLUGIN_DB_UNBIND_FN        201
  566. #define SLAPI_PLUGIN_DB_SEARCH_FN        202
  567. #define SLAPI_PLUGIN_DB_COMPARE_FN        203
  568. #define SLAPI_PLUGIN_DB_MODIFY_FN        204
  569. #define SLAPI_PLUGIN_DB_MODRDN_FN        205
  570. #define SLAPI_PLUGIN_DB_ADD_FN            206
  571. #define SLAPI_PLUGIN_DB_DELETE_FN        207
  572. #define SLAPI_PLUGIN_DB_ABANDON_FN        208
  573. #define SLAPI_PLUGIN_DB_CONFIG_FN        209
  574. #define SLAPI_PLUGIN_CLOSE_FN            210
  575. #define SLAPI_PLUGIN_DB_FLUSH_FN        211
  576. #define SLAPI_PLUGIN_START_FN            212
  577. #define SLAPI_PLUGIN_DB_SEQ_FN            213
  578. #define SLAPI_PLUGIN_DB_ENTRY_FN        214
  579. #define SLAPI_PLUGIN_DB_REFERRAL_FN        215
  580. #define SLAPI_PLUGIN_DB_RESULT_FN        216
  581. #define SLAPI_PLUGIN_DB_LDIF2DB_FN        217
  582. #define SLAPI_PLUGIN_DB_DB2LDIF_FN        218
  583. #define SLAPI_PLUGIN_DB_BEGIN_FN        219
  584. #define SLAPI_PLUGIN_DB_COMMIT_FN        220
  585. #define SLAPI_PLUGIN_DB_ABORT_FN        221
  586. #define SLAPI_PLUGIN_DB_ARCHIVE2DB_FN        222
  587. #define SLAPI_PLUGIN_DB_DB2ARCHIVE_FN        223
  588. #define SLAPI_PLUGIN_DB_NEXT_SEARCH_ENTRY_FN    224
  589. #define SLAPI_PLUGIN_DB_FREE_RESULT_SET_FN    225
  590. #define    SLAPI_PLUGIN_DB_SIZE_FN            226
  591. #define    SLAPI_PLUGIN_DB_TEST_FN            227
  592.  
  593.  
  594. /*  functions pointers for LDAP V3 extended ops */
  595. #define SLAPI_PLUGIN_EXT_OP_FN            300
  596. #define SLAPI_PLUGIN_EXT_OP_OIDLIST        301
  597.  
  598. /* preoperation */
  599. #define SLAPI_PLUGIN_PRE_BIND_FN        401
  600. #define SLAPI_PLUGIN_PRE_UNBIND_FN        402
  601. #define SLAPI_PLUGIN_PRE_SEARCH_FN        403
  602. #define SLAPI_PLUGIN_PRE_COMPARE_FN        404
  603. #define SLAPI_PLUGIN_PRE_MODIFY_FN        405
  604. #define SLAPI_PLUGIN_PRE_MODRDN_FN        406
  605. #define SLAPI_PLUGIN_PRE_ADD_FN            407
  606. #define SLAPI_PLUGIN_PRE_DELETE_FN        408
  607. #define SLAPI_PLUGIN_PRE_ABANDON_FN        409
  608. #define SLAPI_PLUGIN_PRE_ENTRY_FN        410
  609. #define SLAPI_PLUGIN_PRE_REFERRAL_FN        411
  610. #define SLAPI_PLUGIN_PRE_RESULT_FN        412
  611.  
  612. /* internal preoperation */
  613. #define SLAPI_PLUGIN_INTERNAL_PRE_ADD_FN    420
  614. #define SLAPI_PLUGIN_INTERNAL_PRE_MODIFY_FN    421
  615. #define SLAPI_PLUGIN_INTERNAL_PRE_MODRDN_FN    422
  616. #define SLAPI_PLUGIN_INTERNAL_PRE_DELETE_FN    423
  617.  
  618. /* backend preoperation */
  619. #define SLAPI_PLUGIN_BE_PRE_ADD_FN        450
  620. #define SLAPI_PLUGIN_BE_PRE_MODIFY_FN        451
  621. #define SLAPI_PLUGIN_BE_PRE_MODRDN_FN        452
  622. #define SLAPI_PLUGIN_BE_PRE_DELETE_FN        453
  623.  
  624. /* postoperation */
  625. #define SLAPI_PLUGIN_POST_BIND_FN        501
  626. #define SLAPI_PLUGIN_POST_UNBIND_FN        502
  627. #define SLAPI_PLUGIN_POST_SEARCH_FN        503
  628. #define SLAPI_PLUGIN_POST_COMPARE_FN        504
  629. #define SLAPI_PLUGIN_POST_MODIFY_FN        505
  630. #define SLAPI_PLUGIN_POST_MODRDN_FN        506
  631. #define SLAPI_PLUGIN_POST_ADD_FN        507
  632. #define SLAPI_PLUGIN_POST_DELETE_FN        508
  633. #define SLAPI_PLUGIN_POST_ABANDON_FN        509
  634. #define SLAPI_PLUGIN_POST_ENTRY_FN        510
  635. #define SLAPI_PLUGIN_POST_REFERRAL_FN        511
  636. #define SLAPI_PLUGIN_POST_RESULT_FN        512
  637.  
  638. /* internal postoperation */
  639. #define SLAPI_PLUGIN_INTERNAL_POST_ADD_FN    520
  640. #define SLAPI_PLUGIN_INTERNAL_POST_MODIFY_FN    521
  641. #define SLAPI_PLUGIN_INTERNAL_POST_MODRDN_FN    522
  642. #define SLAPI_PLUGIN_INTERNAL_POST_DELETE_FN    523
  643.  
  644. /* backend postoperation */
  645. #define SLAPI_PLUGIN_BE_POST_ADD_FN        550
  646. #define SLAPI_PLUGIN_BE_POST_MODIFY_FN        551
  647. #define SLAPI_PLUGIN_BE_POST_MODRDN_FN        552
  648. #define SLAPI_PLUGIN_BE_POST_DELETE_FN        553
  649.  
  650. #define SLAPI_OPERATION_TYPE            590
  651.  
  652. #define SLAPI_PLUGIN_MR_FILTER_CREATE_FN    600
  653. #define SLAPI_PLUGIN_MR_INDEXER_CREATE_FN    601
  654. #define SLAPI_PLUGIN_MR_FILTER_MATCH_FN        602
  655. #define SLAPI_PLUGIN_MR_FILTER_INDEX_FN        603
  656. #define SLAPI_PLUGIN_MR_FILTER_RESET_FN        604
  657. #define SLAPI_PLUGIN_MR_INDEX_FN        605
  658. #define SLAPI_PLUGIN_MR_OID            610
  659. #define SLAPI_PLUGIN_MR_TYPE            611
  660. #define SLAPI_PLUGIN_MR_VALUE            612
  661. #define SLAPI_PLUGIN_MR_VALUES            613
  662. #define SLAPI_PLUGIN_MR_KEYS            614
  663. #define SLAPI_PLUGIN_MR_FILTER_REUSABLE        615
  664. #define SLAPI_PLUGIN_MR_QUERY_OPERATOR        616
  665. #define SLAPI_PLUGIN_MR_USAGE            617
  666.  
  667. #define SLAPI_MATCHINGRULE_NAME            1
  668. #define SLAPI_MATCHINGRULE_OID            2
  669. #define SLAPI_MATCHINGRULE_DESC            3
  670. #define SLAPI_MATCHINGRULE_SYNTAX        4
  671. #define SLAPI_MATCHINGRULE_OBSOLETE        5
  672.  
  673. #define SLAPI_OP_LESS                    1
  674. #define SLAPI_OP_LESS_OR_EQUAL                2
  675. #define SLAPI_OP_EQUAL                    3
  676. #define SLAPI_OP_GREATER_OR_EQUAL            4
  677. #define SLAPI_OP_GREATER                5
  678. #define SLAPI_OP_SUBSTRING                6
  679.  
  680. #define SLAPI_PLUGIN_MR_USAGE_INDEX        0
  681. #define SLAPI_PLUGIN_MR_USAGE_SORT        1
  682.  
  683. #define SLAPI_PLUGIN_SYNTAX_FILTER_AVA        700
  684. #define SLAPI_PLUGIN_SYNTAX_FILTER_SUB        701
  685. #define SLAPI_PLUGIN_SYNTAX_VALUES2KEYS        702
  686. #define SLAPI_PLUGIN_SYNTAX_ASSERTION2KEYS_AVA    703
  687. #define SLAPI_PLUGIN_SYNTAX_ASSERTION2KEYS_SUB    704
  688. #define SLAPI_PLUGIN_SYNTAX_NAMES        705
  689. #define SLAPI_PLUGIN_SYNTAX_OID            706
  690. #define SLAPI_PLUGIN_SYNTAX_FLAGS        707
  691. #define SLAPI_PLUGIN_SYNTAX_COMPARE        708
  692.  
  693. #define SLAPI_PLUGIN_SYNTAX_FLAG_ORKEYS            1
  694. #define SLAPI_PLUGIN_SYNTAX_FLAG_ORDERING        2
  695.  
  696. #define SLAPI_PLUGIN_ACL_INIT            730
  697. #define SLAPI_PLUGIN_ACL_SYNTAX_CHECK        731
  698. #define SLAPI_PLUGIN_ACL_ALLOW_ACCESS        732
  699. #define SLAPI_PLUGIN_ACL_MODS_ALLOWED        733
  700. #define SLAPI_PLUGIN_ACL_MODS_UPDATE        734
  701.  
  702. #define SLAPI_OPERATION_AUTHTYPE                741
  703. #define SLAPI_OPERATION_ID                      742
  704. #define SLAPI_CONN_CERT                         743
  705. #define SLAPI_CONN_AUTHMETHOD                   746
  706.  
  707. #define SLAPI_RESULT_CODE                       881
  708. #define SLAPI_RESULT_TEXT                       882
  709. #define SLAPI_RESULT_MATCHED                    883
  710.  
  711. /* managedsait control */
  712. #define SLAPI_MANAGEDSAIT               1000
  713.  
  714. /* audit plugin defines */
  715. #define SLAPI_PLUGIN_AUDIT_DATA                1100
  716. #define SLAPI_PLUGIN_AUDIT_FN                  1101
  717.  
  718. /* backend_group extension */
  719. #define SLAPI_X_PLUGIN_PRE_GROUP_FN        1202 
  720. #define SLAPI_X_PLUGIN_POST_GROUP_FN        1203
  721.  
  722. #define SLAPI_X_GROUP_ENTRY            1250 /* group entry */
  723. #define SLAPI_X_GROUP_ATTRIBUTE            1251 /* member attribute */
  724. #define SLAPI_X_GROUP_OPERATION_DN        1252 /* asserted value */
  725. #define SLAPI_X_GROUP_TARGET_ENTRY        1253 /* target entry */
  726.  
  727. /* config stuff */
  728. #define SLAPI_CONFIG_FILENAME            40
  729. #define SLAPI_CONFIG_LINENO            41
  730. #define SLAPI_CONFIG_ARGC            42
  731. #define SLAPI_CONFIG_ARGV            43
  732.  
  733. /*  operational params */
  734. #define SLAPI_TARGET_ADDRESS            48
  735. #define SLAPI_TARGET_UNIQUEID            49
  736. #define SLAPI_TARGET_DN                50
  737.  
  738. /* server LDAPv3 controls  */
  739. #define SLAPI_REQCONTROLS            51
  740. #define SLAPI_RESCONTROLS            55
  741. #define SLAPI_ADD_RESCONTROL            56    
  742. #define SLAPI_CONTROLS_ARG            58
  743.  
  744. /* add params */
  745. #define SLAPI_ADD_TARGET            SLAPI_TARGET_DN
  746. #define SLAPI_ADD_ENTRY                60
  747. #define SLAPI_ADD_EXISTING_DN_ENTRY        61
  748. #define SLAPI_ADD_PARENT_ENTRY            62
  749. #define SLAPI_ADD_PARENT_UNIQUEID        63
  750. #define SLAPI_ADD_EXISTING_UNIQUEID_ENTRY    64
  751.  
  752. /* bind params */
  753. #define SLAPI_BIND_TARGET            SLAPI_TARGET_DN
  754. #define SLAPI_BIND_METHOD            70
  755. #define SLAPI_BIND_CREDENTIALS            71    
  756. #define SLAPI_BIND_SASLMECHANISM        72    
  757. #define SLAPI_BIND_RET_SASLCREDS        73    
  758.  
  759. /* compare params */
  760. #define SLAPI_COMPARE_TARGET            SLAPI_TARGET_DN
  761. #define SLAPI_COMPARE_TYPE            80
  762. #define SLAPI_COMPARE_VALUE            81
  763.  
  764. /* delete params */
  765. #define SLAPI_DELETE_TARGET            SLAPI_TARGET_DN
  766. #define SLAPI_DELETE_EXISTING_ENTRY        SLAPI_ADD_EXISTING_DN_ENTRY
  767.  
  768. /* modify params */
  769. #define SLAPI_MODIFY_TARGET            SLAPI_TARGET_DN
  770. #define SLAPI_MODIFY_MODS            90
  771. #define SLAPI_MODIFY_EXISTING_ENTRY        SLAPI_ADD_EXISTING_DN_ENTRY
  772.  
  773. /* modrdn params */
  774. #define SLAPI_MODRDN_TARGET            SLAPI_TARGET_DN
  775. #define SLAPI_MODRDN_NEWRDN            100
  776. #define SLAPI_MODRDN_DELOLDRDN            101
  777. #define SLAPI_MODRDN_NEWSUPERIOR        102    /* v3 only */
  778. #define SLAPI_MODRDN_EXISTING_ENTRY             SLAPI_ADD_EXISTING_DN_ENTRY
  779. #define SLAPI_MODRDN_PARENT_ENTRY        104
  780. #define SLAPI_MODRDN_NEWPARENT_ENTRY        105
  781. #define SLAPI_MODRDN_TARGET_ENTRY        106
  782. #define SLAPI_MODRDN_NEWSUPERIOR_ADDRESS    107
  783.  
  784. /* search params */
  785. #define SLAPI_SEARCH_TARGET            SLAPI_TARGET_DN
  786. #define SLAPI_SEARCH_SCOPE            110
  787. #define SLAPI_SEARCH_DEREF            111
  788. #define SLAPI_SEARCH_SIZELIMIT            112
  789. #define SLAPI_SEARCH_TIMELIMIT            113
  790. #define SLAPI_SEARCH_FILTER            114
  791. #define SLAPI_SEARCH_STRFILTER            115
  792. #define SLAPI_SEARCH_ATTRS            116
  793. #define SLAPI_SEARCH_ATTRSONLY            117
  794.  
  795. /* abandon params */
  796. #define SLAPI_ABANDON_MSGID            120
  797.  
  798. /* extended operation params */
  799. #define SLAPI_EXT_OP_REQ_OID            160
  800. #define SLAPI_EXT_OP_REQ_VALUE        161    
  801.  
  802. /* extended operation return codes */
  803. #define SLAPI_EXT_OP_RET_OID            162    
  804. #define SLAPI_EXT_OP_RET_VALUE        163    
  805.  
  806. #define SLAPI_PLUGIN_EXTENDED_SENT_RESULT    -1
  807.  
  808. #define SLAPI_FAIL_DISKFULL        -2
  809. #define SLAPI_FAIL_GENERAL        -1
  810. #define SLAPI_PLUGIN_EXTENDED_NOT_HANDLED -2
  811. #define SLAPI_BIND_SUCCESS        0
  812. #define SLAPI_BIND_FAIL            2
  813. #define SLAPI_BIND_ANONYMOUS        3
  814.  
  815. /* Search result params */
  816. #define SLAPI_SEARCH_RESULT_SET            193
  817. #define    SLAPI_SEARCH_RESULT_ENTRY        194
  818. #define    SLAPI_NENTRIES                195
  819. #define SLAPI_SEARCH_REFERRALS            196
  820.  
  821. /* filter types */
  822. #ifndef LDAP_FILTER_AND
  823. #define LDAP_FILTER_AND         0xa0L
  824. #endif
  825. #ifndef LDAP_FILTER_OR
  826. #define LDAP_FILTER_OR          0xa1L
  827. #endif
  828. #ifndef LDAP_FILTER_NOT
  829. #define LDAP_FILTER_NOT         0xa2L
  830. #endif
  831. #ifndef LDAP_FILTER_EQUALITY
  832. #define LDAP_FILTER_EQUALITY    0xa3L
  833. #endif
  834. #ifndef LDAP_FILTER_SUBSTRINGS
  835. #define LDAP_FILTER_SUBSTRINGS  0xa4L
  836. #endif
  837. #ifndef LDAP_FILTER_GE
  838. #define LDAP_FILTER_GE          0xa5L
  839. #endif
  840. #ifndef LDAP_FILTER_LE
  841. #define LDAP_FILTER_LE          0xa6L
  842. #endif
  843. #ifndef LDAP_FILTER_PRESENT
  844. #define LDAP_FILTER_PRESENT     0x87L
  845. #endif
  846. #ifndef LDAP_FILTER_APPROX
  847. #define LDAP_FILTER_APPROX      0xa8L
  848. #endif
  849. #ifndef LDAP_FILTER_EXT_MATCH
  850. #define LDAP_FILTER_EXT_MATCH   0xa9L
  851. #endif
  852.  
  853. int slapi_log_error( int severity, char *subsystem, char *fmt, ... );
  854. #define SLAPI_LOG_FATAL                 0
  855. #define SLAPI_LOG_TRACE                 1
  856. #define SLAPI_LOG_PACKETS               2
  857. #define SLAPI_LOG_ARGS                  3
  858. #define SLAPI_LOG_CONNS                 4
  859. #define SLAPI_LOG_BER                   5
  860. #define SLAPI_LOG_FILTER                6
  861. #define SLAPI_LOG_CONFIG                7
  862. #define SLAPI_LOG_ACL                   8
  863. #define SLAPI_LOG_SHELL                 9
  864. #define SLAPI_LOG_PARSE                 10
  865. #define SLAPI_LOG_HOUSE                 11
  866. #define SLAPI_LOG_REPL                  12
  867. #define SLAPI_LOG_CACHE                 13
  868. #define SLAPI_LOG_PLUGIN                14
  869. #define SLAPI_LOG_TIMING                15
  870.  
  871. #define SLAPI_PLUGIN_DESCRIPTION    12
  872. typedef struct slapi_plugindesc {
  873.         char    *spd_id;
  874.         char    *spd_vendor;
  875.         char    *spd_version;
  876.         char    *spd_description;
  877. } Slapi_PluginDesc;
  878.  
  879. #define SLAPI_PLUGIN_VERSION_01         "01"
  880. #define SLAPI_PLUGIN_VERSION_02         "02"
  881. #define SLAPI_PLUGIN_VERSION_03         "03"
  882. #define SLAPI_PLUGIN_CURRENT_VERSION    SLAPI_PLUGIN_VERSION_03
  883.  
  884. #endif /* _SLAPI_PLUGIN_H */
  885.  
  886.